home *** CD-ROM | disk | FTP | other *** search
Wrap
CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) NNNNAAAAMMMMEEEE CCCCHHHHEEEERRRR2222KKKK, ZZZZHHHHEEEERRRR2222KKKK - Performs Hermitian rank 2_k update of a complex Hermitian matrix SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS Single precision complex Fortran: CCCCAAAALLLLLLLL CCCCHHHHEEEERRRR2222KKKK ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _n,,,, _k,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,, _l_d_b,,,, _b_e_t_a,,,, _c,,,, _l_d_c)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd cccchhhheeeerrrr2222kkkk ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_b,,,, iiiinnnntttt _l_d_b,,,, ffffllllooooaaaatttt *_b_e_t_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_c,,,, iiiinnnntttt _l_d_c))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> vvvvooooiiiidddd cccchhhheeeerrrr2222kkkk ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a_l_p_h_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_b,,,, iiiinnnntttt _l_d_b,,,, ffffllllooooaaaatttt *_b_e_t_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_c,,,, iiiinnnntttt _l_d_c))));;;; Double precision complex Fortran: CCCCAAAALLLLLLLL ZZZZHHHHEEEERRRR2222KKKK ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _n,,,, _k,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,, _l_d_b,,,, _b_e_t_a,,,, _c,,,, _l_d_c)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzhhhheeeerrrr2222kkkk ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_b,,,, iiiinnnntttt _l_d_b,,,, ddddoooouuuubbbblllleeee *_b_e_t_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_c,,,, iiiinnnntttt _l_d_c))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> vvvvooooiiiidddd zzzzhhhheeeerrrr2222kkkk ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a_l_p_h_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_b,,,, iiiinnnntttt _l_d_b,,,, ddddoooouuuubbbblllleeee *_b_e_t_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_c,,,, iiiinnnntttt _l_d_c))));;;; IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN These routines are part of the SCSL Scientific Library and can be loaded using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option. The ----llllssssccccssss____mmmmpppp option directs the linker to use the multi-processor version of the library. When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is 4 bytes (32 bits). Another version of SCSL is available in which integers are 8 bytes (64 bits). This version allows the user access to larger memory sizes and helps when porting legacy Cray codes. It can be loaded by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use PPPPaaaaggggeeee 1111 CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) only one of the two versions; 4-byte integer and 8-byte integer library calls cannot be mixed. The C and C++ prototypes shown above are appropriate for the 4-byte integer version of SCSL. When using the 8-byte integer version, the variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header file should be included. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN These routines perform a Hermitian rank 2_k update of a complex Hermitian matrix. They perform one of the following Hermitian rank 2_k operations: _C <- _a_l_p_h_a _A_B_H + conj(_a_l_p_h_a) _B_A_H + _b_e_t_a*_C _C <- _a_l_p_h_a _A_H_B + conj(_a_l_p_h_a) BHA + _b_e_t_a*_C where the following is true: * _A_H and _B_H are the conjugate transposes of _A and _B, respectively; * _a_l_p_h_a and _b_e_t_a are scalars; * _C is an _n-by-_n Hermitian matrix, * _A and _B are _n-by-_k matrices in the first operation listed previously, and _k-by-_n matrices in the second. See the NOTES section of this man page for information about the interpretation of the data types described in the following arguments. These routines have the following arguments: _u_p_l_o Character. (input) Specifies whether the upper or lower triangular part of array _c is referenced, as follows: _u_p_l_o = 'U' or 'u': only the upper triangular part of _c is referenced. _u_p_l_o = 'L' or 'l': only the lower triangular part of _c is referenced. For C/C++, a pointer to this character is passed. _t_r_a_n_s Character. (input) Specifies the operation to be performed, as follows: _t_r_a_n_s = 'N' or 'n': _C <- _a_l_p_h_a _A_B_H + conj(_a_l_p_h_a) _B_A_H + _b_e_t_a*_C _t_r_a_n_s = 'C' or 'c': _C <- _a_l_p_h_a _A_HB + conj(_a_l_p_h_a) _B_HA + _b_e_t_a*_C PPPPaaaaggggeeee 2222 CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) _n Integer. (input) Specifies the order of matrix _C. _n must be >= 0. _k Integer. (input) On entry with _t_r_a_n_s = 'N' or 'n', _k specifies the number of columns of matrices _A and _B. On entry with _t_r_a_n_s = 'C' or 'c', _k specifies the number of rows of matrices _A and _B. _k must be >= 0. _a_l_p_h_a First scalar factor. (input) CCCCHHHHEEEERRRR2222KKKK: Single precision complex. ZZZZHHHHEEEERRRR2222KKKK: Double precision complex. For C/C++, a pointer to this scalar is passed. _a Array of dimension (_l_d_a,_k_a). (input) CCCCHHHHEEEERRRR2222KKKK: Single precision complex array. ZZZZHHHHEEEERRRR2222KKKK: Double precision complex array. When _t_r_a_n_s = 'N' or 'n', _k_a is _k; otherwise, it is _n. Contains matrix _A. Before entry with _t_r_a_n_s = 'N' or 'n', the leading _n-by-_k part of array _a must contain matrix _A; otherwise, the leading _k-by-_n part of array _a must contain matrix _A. _l_d_a Integer. (input) Specifies the first dimension of _a as declared in the calling program. If _t_r_a_n_s = 'N' or 'n', _l_d_a >= MMMMAAAAXXXX(1,_n); otherwise, _l_d_a >= MMMMAAAAXXXX(1,_k). _b Array of dimension (_l_d_b,_k_b). (input) CCCCHHHHEEEERRRR2222KKKK: Single precision complex array. ZZZZHHHHEEEERRRR2222KKKK: Double precision complex array. When _t_r_a_n_s = 'N' or 'n', _k_b is _k; otherwise, it is _n. Contains matrix _B. Before entry with _t_r_a_n_s = 'N' or 'n', the leading _n-by-_k part of array _b must contain matrix _B; otherwise, the leading _k-by-_n part of array _b must contain matrix _B. _l_d_b Integer. (input) Specifies the first dimension of _b as declared in the calling program. If _t_r_a_n_s = 'N' or 'n', _l_d_b >= MMMMAAAAXXXX(1,_n); otherwise, _l_d_b >= MMMMAAAAXXXX(1,_k). PPPPaaaaggggeeee 3333 CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) _b_e_t_a First scalar factor. (input) CCCCHHHHEEEERRRR2222KKKK: Single precision. ZZZZHHHHEEEERRRR2222KKKK: Double precision. _c Array of dimension (_l_d_c,_n). (input) CCCCHHHHEEEERRRR2222KKKK: Single precision complex array. ZZZZHHHHEEEERRRR2222KKKK: Double precision complex array. Contains matrix _C. Before entry with _u_p_l_o = 'U' or 'u', the leading _n-by-_n upper triangular part of array _c must contain the upper triangular part of the Hermitian matrix. The strictly lower triangular part of _c is not referenced. On exit, the upper triangular part of the updated matrix overwrites the upper triangular part of array _c. Before entry with _u_p_l_o = 'L' or 'l', the leading _n-by-_n lower triangular part of array _c must contain the lower triangular part of the Hermitian matrix. The strictly upper triangular part of _c is not referenced. On exit, the lower triangular part of the updated matrix overwrites the lower triangular part of array _c. The imaginary parts of the diagonal elements need not be set and are assumed to be 0. On exit, they are set to 0. _l_d_c Integer. (input) Specifies the first dimension of _c as declared in the calling program. _l_d_c >= MMMMAAAAXXXX(1,_n). NNNNOOOOTTTTEEEESSSS CCCCHHHHEEEERRRR2222KKKK/ZZZZHHHHEEEERRRR2222KKKK is a Level 3 Basic Linear Algebra Subprogram (Level 3 BLAS). DDDDaaaattttaaaa TTTTyyyyppppeeeessss The following data types are described in this documentation: TTTTeeeerrrrmmmm UUUUsssseeeedddd DDDDaaaattttaaaa ttttyyyyppppeeee Fortran: Array dimensioned _n xxxx((((nnnn)))) Array of dimensions (_m,_n) xxxx((((mmmm,,,,nnnn)))) Character CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR Integer IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) PPPPaaaaggggeeee 4444 CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) Single precision RRRREEEEAAAALLLL Double precision DDDDOOOOUUUUBBBBLLLLEEEE PPPPRRRREEEECCCCIIIISSSSIIIIOOOONNNN Single precision complex CCCCOOOOMMMMPPPPLLLLEEEEXXXX Double precision complex DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX C/C++: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ssssccccssssllll____ccccoooommmmpppplllleeeexxxx Double precision complex ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx C++ STL: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> Double precision complex ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> Note that you can explicitly declare multidimensional C/C++ arrays provided that the array dimensions are swapped with respect to the Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran). To avoid a compiler type mismatch error in C++ (or a compiler warning message in C), however, the array should be cast to a pointer of the appropriate type when passed as an argument to a SCSL routine. PPPPaaaaggggeeee 5555 CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) CCCCHHHHEEEERRRR2222KKKK((((3333SSSS)))) SSSSEEEEEEEE AAAALLLLSSSSOOOO IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS3333(3S), SSSSSSSSYYYYRRRR2222KKKK(3S) IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77 Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic Linear Algebra Subprograms Technical Forum. PPPPaaaaggggeeee 6666